#include "led.h"

void LED_Ctrl(int LED_ID, int ON_OFF)
{
    const uint16_t pin_array[8] = {GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3, GPIO_Pin_4, GPIO_Pin_5, GPIO_Pin_6, GPIO_Pin_7};
    
    if (LED_ID >= 1 && LED_ID <= 8)
    {
        if (ON_OFF != ON)
            GPIO_SetBits(GPIOB, pin_array[LED_ID - 1]); 
        else
            GPIO_ResetBits(GPIOB, pin_array[LED_ID - 1]); 
    }
    else
    {
        // Handle invalid LED_ID
    }
}

void LED_Init()
{
    GPIO_InitTypeDef GPIO_InitStruct;
    int i = 1;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  

    for (i = 1; i <= 8; i++)
    {
        GPIO_InitStruct.GPIO_Pin = (1 << (i - 1)); 
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOB, &GPIO_InitStruct);
    }
    for (i = 1; i <= 8; i++)
    {
        LED_Ctrl(i, OFF);
    }
}
void Water_LED(void)
{
	int i = 1;
	LED_Init();
	for(i = 1;i<=8;i++)
	{
		delay_ms(1000);
		LED_Ctrl(i,ON);
		if(i==8)
		{
			for(i = 8;i>=1;i--)
			{
				delay_ms(1000);
				LED_Ctrl(i,OFF);	
			}
		}
	}
}